import Vue from 'vue'
import Vuex from 'vuex'
import { getItem, setItem } from '@/utils/storage.js'
Vue.use(Vuex)

export default new Vuex.Store({
  // 保存公共数据
  state: {
    // 在tokenInfo中保存token和refresh_token
    // 在设置vuex中的初值时，先从本地存储中取，如果取不到，则初始为空
    tokenInfo: getItem('tokenInfo') || {},
  },
   // 修改 state
  mutations: {      
    /**
     * 目的 每次更新 tokenInfo 同时更新 storage
     * @param {*} state 
     * @param {*} tokenObj 
     */
    mSetTokenInfo(state,tokenObj) {    
      debugger  
      state.tokenInfo = tokenObj;      
      setItem('tokenInfo', state.tokenInfo)
    },
    /**
     * state 中只更新token，不更新refresh_token
     * @param {*} state 
     * @param {*} newToken 
     */
    mUpdateToken (state, newToken) {     
      // 收到更新token的通知更新 state.tokenInfo.token
      state.tokenInfo.token = newToken
      setItem('tokenInfo', state.tokenInfo)
    }
  }  
})
